//-------------------------------------------------------------------
//	Copyright (c) 2010-2012 Zhirnov Andrey
//	This file is part of the "UXGEN" project.
//	See copyright notice in "Engine.h".
//-------------------------------------------------------------------

#ifndef _UX_SCENE_H
#define _UX_SCENE_H

#include "SceneMessages.h"

namespace Engine
{
namespace Scene
{

	//
	// Scene
	//

	class _EXPORT_ CScene : public IBaseScene
	{
	protected:
		// types
		typedef pod_array< ISceneNode *>	node_array_t;
		typedef pod_array< ISceneSystem *>	system_array_t;

	protected:
		// values
		node_array_t		_aNodes;
		system_array_t		_aSystems;


	public:
		CScene();
		~CScene();


		// IScene //
		virtual void  AddNode(ISceneNode *);
		virtual void  RemoveNode(ISceneNode *);
		virtual bool  GetNode(const string &, ISceneNode *&);

		virtual void  AddSystem(ISceneSystem *);
		virtual void  RemoveSystem(ISceneSystem *);
		virtual bool  GetSystem(const string &, ISceneSystem *&);

		virtual void  Destroy();
		
		virtual bool  ProcessMessage(TSceneMessage &);
	};

//-------------------------------------------------------------------

}	// Scene
}	// Engine

#endif	// _UX_SCENE_H